#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
using namespace std;

typedef pair<int,int> pii;
string s1,s2;
int dp[1010][1010];
int state[1010][1010];
vector<pii> res;
int move(int i,int j,int k,int t)
{
    if(k<dp[i][j])
    {
        dp[i][j]=k;
        state[i][j]=t;
    }
}
void goBack(pii &t)
{
    if(state[t.first][t.second]<2) t.first--,t.second--;
    else if(state[t.first][t.second]==2) t.first--;
    else t.second--;
}

int main()
{
    while(cin>>s1>>s2)
    {
        fill(dp[0],dp[0]+1010*1010,1<<29);
        dp[0][0]=0;
        res.clear();
        for(int i=0;i<=s1.size();i++) for(int j=0;j<=s2.size();j++)
        {
            if(s1[i]==s2[j])  move(i+1,j+1,dp[i][j],0);
            else move(i+1,j+1,dp[i][j]+1,1);
            move(i+1,j,dp[i][j]+1,2);
            move(i,j+1,dp[i][j]+1,3);
        }
        pii tp=pii(s1.size(),s2.size());
        while(1)
        {
            if(tp.first<0||tp.second<0) break;
            if(state[tp.first][tp.second])res.push_back(tp);
            goBack(tp);
        }
        cout<<res.size()<<endl;
        while(!res.empty())
        {
            tp=res.back(),res.pop_back();
            int i=tp.first,j=tp.second;
            if(state[i][j]==1)
            {
                printf("REPLACE %d %c\n",j,s2[j-1]);
            }
            else if(state[i][j]==2)
                printf("DELETE %d\n",j+1);
            else printf("INSERT %d %c\n",j,s2[j-1]);
        }
    }
    return 0;
}
